using System;
using System.Collections.Generic;

namespace Domain.DTOs.RBAC
{
    /// <summary>
    /// 部门数据传输对象
    /// 原DTO名: DepartmentDTO（字段命名已规范化）
    /// </summary>
    public class DepartmentDTO
    {
        /// <summary>
        /// 部门ID（主键）
        /// 原字段名: Departmentid
        /// 修改后字段名: Id
        /// </summary>
        public long Id { get; set; }

        /// <summary>
        /// 部门编号（业务唯一标识）
        /// 新增字段
        /// </summary>
        public string DepartmentCode { get; set; }

        /// <summary>
        /// 部门名称
        /// 原字段名: Departmentname
        /// 修改后字段名: DepartmentName
        /// </summary>
        public string DepartmentName { get; set; }

        /// <summary>
        /// 父级部门ID（0 表示顶级部门）
        /// 原字段名: Parentid
        /// 修改后字段名: ParentId
        /// </summary>
        public long ParentId { get; set; }

        /// <summary>
        /// 父级部门名称
        /// 新增字段：便于前端显示
        /// </summary>
        public string? ParentName { get; set; }

        /// <summary>
        /// 部门描述
        /// 新增字段
        /// </summary>
        public string? Description { get; set; }

        /// <summary>
        /// 部门负责人ID
        /// 新增字段
        /// </summary>
        public long? LeaderId { get; set; }

        /// <summary>
        /// 部门负责人姓名
        /// 新增字段
        /// </summary>
        public string? LeaderName { get; set; }

        /// <summary>
        /// 部门层级
        /// 新增字段
        /// </summary>
        public int Level { get; set; }

        /// <summary>
        /// 排序号
        /// 新增字段
        /// </summary>
        public int Sort { get; set; }

        /// <summary>
        /// 部门状态（1-启用，0-禁用）
        /// 新增字段
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// 部门全路径
        /// 新增字段
        /// </summary>
        public string? FullPath { get; set; }

        /// <summary>
        /// 联系电话
        /// 新增字段
        /// </summary>
        public string? Phone { get; set; }

        /// <summary>
        /// 部门邮箱
        /// 新增字段
        /// </summary>
        public string? Email { get; set; }

        /// <summary>
        /// 备注信息
        /// 新增字段
        /// </summary>
        public string? Remark { get; set; }

        /// <summary>
        /// 创建时间
        /// 新增字段：审计信息
        /// </summary>
        public DateTime? CreateDate { get; set; }

        /// <summary>
        /// 创建人
        /// 新增字段：审计信息
        /// </summary>
        public string? CreateName { get; set; }

        /// <summary>
        /// 修改时间
        /// 新增字段：审计信息
        /// </summary>
        public DateTime? UpdateDate { get; set; }

        /// <summary>
        /// 修改人
        /// 新增字段：审计信息
        /// </summary>
        public string? UpdateName { get; set; }

        /// <summary>
        /// 子部门列表（递归树形结构）
        /// 新增字段
        /// </summary>
        public List<DepartmentDTO>? Children { get; set; } = new();

        /// <summary>
        /// 是否有子部门
        /// 新增字段：便于前端树形控件展示
        /// </summary>
        public bool HasChildren { get; set; }
    }
}

